package com.ocean.linkedlist;

/**
 * https://leetcode.cn/problems/swap-nodes-in-pairs/
 */
public class SwapPairs3 {

    public static void main(String[] args) {

        ListNode e4 = new ListNode(4, null);
        ListNode e3 = new ListNode(3, e4);
        ListNode e2 = new ListNode(2, e3);
        ListNode e1 = new ListNode(1, e2);
        // 1 2 3 4
        // 2 1 4 3
        ListNode.print(e1);
        ListNode listNode = new SwapPairs3().swapPairs(e1);
        ListNode.print(listNode);
    }

    public ListNode swapPairs(ListNode head) {
        if (head == null) {
            return head;
        }
        ListNode dummy = new ListNode();
        dummy.next = head;
        ListNode cur = dummy;
        while (cur.next != null && cur.next.next != null) {
            ListNode l1 = cur.next;
            ListNode l2 = cur.next.next;
            l1.next = l2.next;
            l2.next = l1;
            cur.next = l2;
            cur = l1;
        }
        return dummy.next;
    }
}
